﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>


//strcmp 的使⽤和模拟实现(比较字符串内容)
//int my_strcmp(const char* str1, const char* str2)
//{
//	assert(str1 && str2);
//	while (*str1 == *str2)
//	{
//		if (*str1 == '\0')
//			return 0;
//		str1++;
//		str2++;
//	}
//	/*if (*str1 > *str2)
//		return 1;
//	else
//		return -1;*/
//	return *str1 - *str2;
//}
//int main()
//{
//	char arr1[] = "abc";
//	char arr2[] = "abcdef";
//	//int ret = strcmp(arr1, arr2);//库函数strcmp
//	int ret = my_strcmp(arr1, arr2);//模拟实现strcmp
//	printf("%d\n", ret);
//	return 0;
//}


//strncpy 函数的使⽤(长度受限制)
//int main()
//{
//	char arr1[] = "abcdef";
//	char arr2[] = "abcd";
//	//strncpy(arr2, arr1, 3);//库函数
//	//strncat(arr2, arr1, 4);//库函数
//	//printf("%s\n", arr2);
//	int ret = strncmp(arr1, arr2, 5);//库函数
//	printf("%d\n", ret);
//	return 0;
//}


// strstr 的使⽤和模拟实现(在一个字符串中查找另一个字符串)
//int main()
//{
//	char arr1[] = "this is an apple";
//	char arr2[] = "is";
//	char* ret = strstr(arr1, arr2);
//	if (ret != NULL)
//		printf("%s\n", ret);
//	else
//		printf("找不到\n");
//	return 0;
//}

//char* my_strstr(const char* str1, const char* str2)
//{
//	const char* s1 = NULL;
//	const char* s2 = NULL;
//	const char* cp = str1;
//	if (*str2 == '\0')
//		return (char*)str1;
//	while (cp != '\0')
//	{
//		s1 = cp;
//		s2 = str2;
//		while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
//		{
//			s1++;
//			s2++;
//		}
//		if (*s2 == '\0')
//			return cp;
//		cp++;
//	}
//	return NULL;
//}
//int main()
//{
//	char arr1[] = "abcdefabcdef";
//	char arr2[] = "cdef";
//	char* ret = my_strstr(arr1, arr2);
//	if (ret != NULL)
//		printf("%s\n", ret);
//	else
//		printf("找不到\n");
//	return 0;
//}

//strtok 函数的使⽤(把字符串中有分隔符的提取出来)
//int main()
//{
//	char arr[] = "192.168.6.111.222.333";
//	const char* sep = ".";//分隔符
//	char* str = NULL;
//
//	/*str = strtok(arr, sep);
//	printf("%s\n", str);
//
//	str = strtok(NULL, sep);
//	printf("%s\n", str);
//
//	str = strtok(NULL, sep);
//	printf("%s\n", str);
//
//	str = strtok(NULL, sep);
//	printf("%s\n", str);*/
//	for (str = strtok(arr, sep); str != NULL;str = strtok(NULL,sep))
//	{
//		printf("%s\n", str);
//	}
//	return 0;
//}


//strerror 函数的使⽤
//int main()
//{
//	int i = 0;
//	for(i=0;i<=10;i++)
//	{
//		printf("%d:     %s\n",i,strerror(i));
//	}
//	return 0;
//}
//perror  直接打印错误信息的时候，先打印传给perror的字符串，然后再打印冒号，在打印空格，最后打印对印的错误的信息



//0  数字
//'0'字符0
//NULL 空指针
//'\0' 
//””空字符串